package com.quantum.reflection
{

	import com.quantum.util.StringUtils;

	/**
	 * Represents meta metadatas reflection info.
	 */
	public class MetadataObject
	{
		/**
		 * The metadata name.
		 */
		public var name:String;

		/**
		 * The metadata arguments, or null if none.
		 */
		public var metadataArguments:Vector.<MetadataArgument>;

		/**
		 * Adds an argument to this metadata.
		 */
		public function addMetadataArgument(metadataArgument:MetadataArgument):void
		{
			if (this.metadataArguments == null)
			{
				this.metadataArguments=new Vector.<MetadataArgument>();
			}
			this.metadataArguments.push(metadataArgument);
		}

		/**
		 * Returns the argument having the given key, or null if none.
		 */
		public function getMetadataArgument(metadataArgumentKey:String):MetadataArgument
		{
			for each (var metadataArgument:MetadataArgument in this.metadataArguments)
			{
				if (metadataArgument.key == metadataArgumentKey)
				{
					return metadataArgument;
				}
				if (StringUtils.isEmpty(metadataArgumentKey) && StringUtils.isEmpty(metadataArgument.key))
				{
					return metadataArgument;
				}
			}
			return null;
		}
		public function getMetadataArgumentValue(metadataArgumentKey:String):String
		{
			var metadataArgument:MetadataArgument=	getMetadataArgument(metadataArgumentKey);
			if(null!=metadataArgument) {
				return metadataArgument.value;
			}return null;
		}

	}
}